针对设备上报数据,提供标准的数据转发功能,数据将转发到用户自定义的路由目的地端点,同时支持数据加密、压缩、和格式转化。该功能简化了设备数据存储流程,丰富的数据处理方式有利于对数据做二次功能开发。
功能描述:在物联网平台上新建一个路由实例,返回该路由的ID。
POST /api/v1/routers
Body:
Name | Type | Description | Required |
---|---|---|---|
name | string | 客户端名称 | Yes |
env | int | 执行环境,1:云端 | Yes |
type | int | 客户端类型 (1:标准数据转发/ 2:规则引擎配置类型/ 3:数据分析配置类型),规则引擎和数据分析配置类型表示此路由实例将被规则引擎和数据分析使用。 | Yes |
addressType | int | 转发方式(1:REST / 2:MQTT / 3:KAFKA / 4:MYSQL / 6:ONENET / 7:SQL Server) | Yes |
addressConfigId | int | 目的地配置ID, 参考 目的地配置 | Yes |
format | int | 数据格式(1:JSON / 2:XML/ 3:SERIALIZED / 4:CSV),MYSQL和ONENET的转发方式仅支持JSON | Yes |
encryption | struct | 加密规则结构体,详情见下方表格(MYSQL和ONENET的转发方式不支持加密) | No |
compression | int | 数据压缩方式(1:NONE / 2:GZIP / 3:ZIP),MYSQL和ONENET的转发方式不支持压缩 | No |
filter | struct | 过滤器结构体,只支持type为标准数据转发类型。 | No, type为标准数据转发类型时必须。 |
Body filter结构体:
Name | Type | Description | Required |
---|---|---|---|
devIdentifiers | struct[] | 过滤规则结构体 | Yes |
Body filter devIdentifiers结构体:
Name | Type | Description | Required |
---|---|---|---|
pid | string | 产品ID的字符串 | Yes |
deviceMap | map | key是deviceId,value设备名称 | Yes |
valueDescriptorIdentifiers | string[] | 需过滤的属性名(必须首先设置设备ID) | No(无值则默认为全部属性) |
identifierType | int | 标识符类型(0:属性、1:事件) | No(无该字段,则默认为0) |
Body encryption结构体:
Name | Type | Description | Required |
---|---|---|---|
encryptionAlgorithm | int | 加密方式(1:NONE / 2:AES), 目前只支持AES, NONE表示不加密。 | Yes |
encryptionKey | string | AES加密Key | No,AES加密时必须 |
initializingVector | string | 初始化向量 | No |
Body example:
实例类型为STANDARD(type=1)、转发方式为REST(addressType=1)时如下,其他转发方式只需更改addressType和addressConfigId即可:
{
"name": "zs_test",
"env": 2,
"type": 1,
"addressType": 4,
"addressConfigId": 36,
"format": 1,
"encryption": {
"encryptionAlgorithm": 2,
"encryptionKey": "12345678901234567890123456789012",
"initializingVector": ""
},
"compression": 3,
"filter": {
"devIdentifiers": [
{
"pid": "100076",
"deviceMap": {"10000156":"victor-project-mqtt_1"},
"valueDescriptorIdentifiers": [
]
}
]
}
}
实例类型为规则引擎配置类型(type=2)、转发方式为MQTT(addressType=2)时如下,其他转发方式只需更改addressType和addressConfigId即可:
{
"name": "rule_router1",
"env": 1,
"type": 2,
"addressType": 2,
"addressConfigId": 13392,
"format": 3,
"encryption": {
"encryptionAlgorithm": 1,
"encryptionKey": "",
"initializingVector": ""
},
"compression": 1
}
实例类型为数据分析配置类型(type=3)、转发方式为MYSQL(addressType=4)时如下,其他转发方式只需更改addressType和addressConfigId即可:
{
"name": "analyze_router1",
"env": 1,
"type": 3,
"addressType": 4,
"addressConfigId": 13395,
"format": 1
}
cURL example:
实例类型为标准数据转发类型(type=1)、转发方式为REST(addressType=1)时如下,其他转发方式只需更改addressType和addressConfigId即可:
curl --location --request POST '{URI-scheme}://{Endpoint}{path-prefix}/api/v1/routers?accessKeyId={accessKeyId}&signatureNonce=809&signature={signature}' \
--header 'platform: 1' \
--header 'projectId: {projectId}' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "zs_test",
"env": 2,
"type": 1,
"addressType": 4,
"addressConfigId": 36,
"format": 1,
"encryption": {
"encryptionAlgorithm": 2,
"encryptionKey": "12345678901234567890123456789012",
"initializingVector": ""
},
"compression": 3,
"filter": {
"devIdentifiers": [
{
"pid": "100076",
"deviceMap": {"10000156":"victor-project-mqtt_1"},
"valueDescriptorIdentifiers": [
]
}
]
}
}'
实例类型为规则引擎配置类型(type=2)、转发方式为MQTT(addressType=2)时如下,其他转发方式只需更改addressType和addressConfigId即可:
curl --location --request POST '{URI-scheme}://{Endpoint}{path-prefix}/api/v1/routers?accessKeyId={accessKeyId}&signatureNonce=726&signature={signature}' \
--header 'platform: 1' \
--header 'projectId: {projectId}' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "rule_router1",
"env": 1,
"type": 2,
"addressType": 2,
"addressConfigId": 13392,
"format": 3,
"encryption": {
"encryptionAlgorithm": 1,
"encryptionKey": "",
"initializingVector": ""
},
"compression": 1
}'
实例类型为数据分析配置类型(type=3)、转发方式为MYSQL(addressType=4)时如下,其他转发方式只需更改addressType和addressConfigId即可:
curl --location --request POST '{URI-scheme}://{Endpoint}{path-prefix}/api/v1/routers?accessKeyId={accessKeyId}&signatureNonce=14&signature={signature}' \
--header 'platform: 1' \
--header 'projectId: {projectId}' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "analyze_router1",
"env": 1,
"type": 3,
"addressType": 4,
"addressConfigId": 13395,
"format": 1
}'
Response:
Name | Type | Description |
---|---|---|
data | int | 新建路由实例的ID |
Response example:
{
"data": 10261,
"success": true,
"code": 0,
"msg": null
}
功能描述:查询物联网平台中的路由实例, 返回该消路由的详细信息。
GET /api/v1/routers/{id}
Path:
Name | Type | Description | Required |
---|---|---|---|
id | int | 路由实例ID | Yes |
cURL example:
curl --location --request GET '{URI-scheme}://{Endpoint}{path-prefix}/api/v1/routers/10256?accessKeyId={accessKeyId}&signatureNonce=529&signature={signature}' \
--header 'platform: 1'
Response data:
Name | Type | Description |
---|---|---|
id | string | 路由实例ID |
addressConfigId | int | 目的地址配置ID |
addressConfigName | string | 空(暂不提供值) |
addressType | int | 目的地址配置类型,具体含义可参考创建目的地址配置 |
compression | int | 数据压缩方式 |
created | long | 创建时间,单位毫秒 |
encryption | struct | 加密规则结构体 |
env | int | 执行环境,1:云端 |
filter | struct | 过滤器结构体 |
format | int | 数据格式 |
modified | long | 修改时间,单位毫秒 |
name | string | 实例名称 |
type | int | 实例类型 |
status | int | 启停状态(1停用,2启用) |
Response data filter结构体:
Name | Type | Description |
---|---|---|
devIdentifiers | struct[] | 过滤规则结构体 |
Response data filter devIdentifiers结构体:
Name | Type | Description |
---|---|---|
pid | string | 产品ID的字符串 |
productName | string | 产品名 |
protocolType | int | 产品协议类型 |
deviceMap | map | key是deviceId,value设备名称 |
deviceName | string | 设备名 |
valueDescriptorIdentifiers | string[] | 需过滤的属性名(必须首先设置设备ID) |
identifierType | int | 标识符类型(0:属性、1:事件) |
Response data encryption结构体:
Name | Type | Description |
---|---|---|
encryptionAlgorithm | int | 加密方式(1:NONE / 2:AES), 目前只支持AES, NONE表示不加密。 |
encryptionKey | string | AES加密Key |
initializingVector | string | 初始化向量 |
Response example:
{
"data": {
"id": 10256,
"addressConfigId": 13391,
"addressConfigName": "",
"addressType": 1,
"compression": 3,
"created": 1588908145384,
"encryption": {
"encryptionAlgorithm": 2,
"encryptionKey": "12345678901234567890123456789012",
"initializingVector": null
},
"env": 1,
"filter": {
"devIdentifiers": [
{
"deviceMap": {"10000156":"victor-project-mqtt_1"},
"deviceName": "devSSS11",
"pid": "100013",
"productName": "dafadfadfad",
"protocolType": 3,
"identifierType": 0,
"valueDescriptorIdentifiers": [
"xxxxaaa"
]
}
]
},
"format": 1,
"modified": 1588908145384,
"name": "standard_router",
"type": 1,
"userId": "bb5f2d0f4fad4d2ab1897d3fdca7c5c3",
"status": 1,
"platform": 1,
"ownerName": null
},
"success": true,
"code": 0,
"msg": null
}
功能描述:修改物联网平台中指定的路由实例。
PATCH /api/v1/routers/{id}
Path:
Name | Type | Description | Required |
---|---|---|---|
id | int | 路由实例ID | Yes |
Body:
Name | Type | Description | Required |
---|---|---|---|
name | string | 客户端名称 | No |
type | int | 客户端类型(1:标准数据转发/2:规则引擎配置类型/3:数据分析配置类型),规则引擎和数据分析配置类型表示此路由实例将被规则引擎和数据分析使用。 | No |
addressConfigId | int | 目的地配置ID, 参考 目的地配置 | No |
format | string | 数据格式(1:JSON / 2:XML/ 3:SERIALIZED / 4:CSV),MYSQL和ONENET的转发方式仅支持JSON | No |
encryption | struct | 加密规则结构体,详情见下方表格(MYSQL和ONENET的转发方式不支持加密) | No |
compression | int | 数据压缩方式(1:NONE / 2:GZIP / 3:ZIP),MYSQL和ONENET的转发方式不支持压缩 | No |
filter | struct | 过滤器结构体,只支持type为标准数据转发类型。 | No |
Body filter结构体:
Name | Type | Description | Required |
---|---|---|---|
devIdentifiers | struct[] | 过滤规则结构体 | Yes |
Body filter devIdentifiers结构体:
Name | Type | Description | Required |
---|---|---|---|
pid | string | 产品ID的字符串 | Yes |
deviceMap | map | key是deviceId,value设备名称 | Yes |
valueDescriptorIdentifiers | string[] | 需过滤的属性名(必须首先设置设备ID) | No(无值则默认为全部属性) |
identifierType | int | 标识符类型(0:属性、1:事件) | No(无该字段,则默认为0) |
Body encryption结构体:
Name | Type | Description | Required |
---|---|---|---|
encryptionAlgorithm | int | 加密方式(1:NONE / 2:AES), 目前只支持AES, NONE表示不加密。 | Yes |
encryptionKey | string | AES加密Key | No,AES加密时必须 |
initializingVector | string | 初始化向量 | No |
Body example:
可以参考新增路由实例获取更多例子信息:
{
"name": "standard_router11",
"type": 1,
"addressConfigId": 13391,
"format": 1,
"encryption": {
"encryptionAlgorithm": 2,
"encryptionKey": "12345678901234567890123456789012",
"initializingVector": ""
},
"compression": 3,
"filter": {
"devIdentifiers": [
{
"pid": "100013",
"deviceMap": {"10000156":"victor-project-mqtt_1"},
"valueDescriptorIdentifiers": [
"xxxxaaa"
]
}
]
}
}
cURL example:
curl --location --request PATCH '{URI-scheme}://{Endpoint}{path-prefix}/api/v1/routers/10257?accessKeyId={accessKeyId}&signatureNonce=719&signature={signature}' \
--header 'platform: 1' \
--header 'projectId: {projectId}' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "standard_router11",
"type": 1,
"addressConfigId": 13391,
"format": 1,
"encryption": {
"encryptionAlgorithm": 2,
"encryptionKey": "12345678901234567890123456789012",
"initializingVector": ""
},
"compression": 3,
"filter": {
"devIdentifiers": [
{
"pid": "100013",
"deviceMap": {"10000156":"victor-project-mqtt_1"},
"valueDescriptorIdentifiers": [
"xxxxaaa"
]
}
]
}
}'
Response:
Name | Type | Description |
---|---|---|
data | int | 修改路由实例的ID |
Response example:
{
"data": 10257,
"success": true,
"code": 0,
"msg": null
}
功能描述:删除指定的客户端。
DELETE /api/v1/routers/{id}
Path:
Name | Type | Description | Required |
---|---|---|---|
id | int | 路由实例ID | Yes |
cURL example:
curl --location --request DELETE '{URI-scheme}://{Endpoint}{path-prefix}/api/v1/routers/10256?accessKeyId={accessKeyId}&signatureNonce=529&signature={signature}' \
--header 'platform: 1'
Response example:
{
"data": null,
"success": true,
"code": 0,
"msg": null
}
功能描述:根据名称模糊查询物联网平台中的路由实例,指定当前分页和分页大小,返回 客户端列表和数量。
GET /api/v1/routers
Query:
Name | Type | Description | Required |
---|---|---|---|
type | int | 客户端类型(1:标准数据转发类型/ 2:规则引擎配置类型/ 3:数据分析配置类型),规则引擎和数据分析配置类型表示此路由实例将被规则引擎和数据分析使用。 | No |
pageSize | int | 分页大小 | Yes |
currentPage | int | 页码 | Yes |
name | string | 客户端名称 | No |
address | string | 目的地配置名称 | No |
addressType | int | 转发方式(1:REST / 2:MQTT / 3:KAFKA / 4:MYSQL / 5:保留值 / 6:ONENET / 7:SQL Server / 10:数据湖KAFKA) | No |
cURL example:
curl --location --request GET '{URI-scheme}://{Endpoint}{path-prefix}/api/v1/routers?accessKeyId={accessKeyId}&signatureNonce=266&signature={signature}¤tPage=1&pageSize=5&name=ana&type=3&address=mysql2' \
--header 'platform: 1' \
--header 'projectId: {projectId}'
Response data:
Name | Type | Description |
---|---|---|
currentPage | int | 当前页数 |
pageSize | int | 每页数量 |
totalCount | int | 符合条件的总数量 |
totalPage | int | 符合条件的总页数 |
content | struct[] | 本页数据列表 |
Response data content:
Name | Type | Description |
---|---|---|
id | string | 路由实例ID |
addressConfigId | int | 目的地址配置ID |
addressConfigName | string | 空(暂不提供值) |
addressType | int | 目的地址配置类型,具体含义可参考创建目的地址配置 |
compression | int | 数据压缩方式 |
created | long | 创建时间,单位毫秒 |
encryption | struct | 加密规则结构体 |
env | int | 执行环境:1-云端 |
filter | struct | 过滤器结构体 |
format | int | 数据格式 |
modified | long | 修改时间,单位毫秒 |
name | string | 实例名称 |
type | int | 实例类型 |
status | int | 启停状态(1停用,2启用) |
Response data content filter结构体:
Name | Type | Description |
---|---|---|
devIdentifiers | struct[] | 过滤规则结构体 |
Response data content filter devIdentifiers结构体:
Name | Type | Description |
---|---|---|
pid | string | 产品ID的字符串 |
productName | string | 产品名 |
protocolType | int | 产品协议类型 |
deviceMap | map | key是deviceId,value设备名称 |
deviceName | string | 设备名 |
valueDescriptorIdentifiers | string[] | 需过滤的属性名(必须首先设置设备ID) |
identifierType | int | 标识符类型(0:属性、1:事件) |
Response data content encryption结构体:
Name | Type | Description |
---|---|---|
encryptionAlgorithm | int | 加密方式(1:NONE / 2:AES), 目前只支持AES, NONE表示不加密。 |
encryptionKey | string | AES加密Key |
initializingVector | string | 初始化向量 |
{
"data": {
"currentPage": 1,
"pageSize": 5,
"totalCount": 2,
"totalPage": 1,
"content": [
{
"id": 10265,
"addressConfigId": 13395,
"addressConfigName": "mysql2",
"addressType": 4,
"compression": 1,
"created": 1588918697827,
"encryption": {
"encryptionAlgorithm": 1,
"encryptionKey": null,
"initializingVector": null
},
"env": 1,
"filter": {
"devIdentifiers": null
},
"format": 1,
"modified": 1588918697827,
"name": "analyze_router1",
"type": 3,
"userId": "bb5f2d0f4fad4d2ab1897d3fdca7c5c3",
"status": 1,
"platform": 1,
"ownerName": null
},
{
"id": 10264,
"addressConfigId": 13395,
"addressConfigName": "mysql2",
"addressType": 4,
"compression": 1,
"created": 1588918634775,
"encryption": {
"encryptionAlgorithm": 1,
"encryptionKey": null,
"initializingVector": null
},
"env": 1,
"filter": {
"devIdentifiers": null
},
"format": 1,
"modified": 1588918634775,
"name": "analyze_router",
"type": 3,
"userId": "bb5f2d0f4fad4d2ab1897d3fdca7c5c3",
"status": 1,
"platform": 1,
"ownerName": null
}
]
},
"success": true,
"code": 0,
"msg": null
}
功能描述:启用物联网中指定的路由实例,路由实例启用后才能实现数据转发。
PUT /api/v1/routers/{id}/enable
Path:
Name | Type | Description | Required |
---|---|---|---|
id | int | 路由实例ID | Yes |
cURL example:
curl --location --request PUT '{URI-scheme}://{Endpoint}{path-prefix}/api/v1/routers/10256/enable?accessKeyId={accessKeyId}&signatureNonce=529&signature={signature}' \
--header 'platform: 1' \
--header 'projectId: {projectId}'
Response:
Name | Type | Description |
---|---|---|
data | int | 启用路由实例的ID |
Response example:
{
"data": 10256,
"success": true,
"code": 0,
"msg": null
}
功能描述:禁用物联网中的路由实例。
PUT /api/v1/routers/{id}/disable
Path:
Name | Type | Description | Required |
---|---|---|---|
id | int | 路由实例ID | Yes |
cURL example:
curl --location --request PUT '{URI-scheme}://{Endpoint}{path-prefix}/api/v1/routers/10256/disable?accessKeyId={accessKeyId}&signatureNonce=529&signature={signature}' \
--header 'platform: 1' \
--header 'projectId: {projectId}'
Response:
Name | Type | Description |
---|---|---|
data | int | 启用路由实例的ID |
Response example:
{
"data": 10256,
"success": true,
"code": 0,
"msg": null
}
功能描述:批量启用指定的云端的路由实例,路由实例启用后才能实现数据转发。
PUT /api/v1/routers/enable
Body:
Name | Type | Description | Required |
---|---|---|---|
list | int[] | 路由实例的ID数组 | Yes |
Body Example:
{
"list": [
10258,
10259
]
}
cURL example:
curl --location --request PUT '{URI-scheme}://{Endpoint}{path-prefix}/api/v1/routers/enable?accessKeyId={accessKeyId}&signatureNonce=322&signature={signature}' \
--header 'platform: 1' \
--header 'projectId: {projectId}' \
--header 'Content-Type: application/json' \
--data-raw '{
"list": [
10258,
10259
]
}'
Response example:
{
"data": null,
"success": true,
"code": 0,
"msg": null
}
功能描述:批量禁用指定的云端的路由实例。
PUT /api/v1/routers/disable
Body:
Name | Type | Description | Required |
---|---|---|---|
list | int[] | 路由实例的ID数组 | Yes |
Body Example:
{
"list": [
10258,
10259
]
}
cURL example:
curl --location --request PUT '{URI-scheme}://{Endpoint}{path-prefix}/api/v1/routers/disable?accessKeyId={accessKeyId}&signatureNonce=322&signature={signature}' \
--header 'platform: 1' \
--header 'projectId: {projectId}' \
--header 'Content-Type: application/json' \
--data-raw '{
"list": [
10258,
10259
]
}'
Response example:
{
"data": null,
"success": true,
"code": 0,
"msg": null
}